#!/usr/bin/python

# Flag para teste unitario
flag_unit_test=0
#flag_unit_test=1

# teste unitario
if flag_unit_test==1:
	import time , os , sys
	sys.path.append("lib/log")
	sys.path.append("lib/db")
	sys.path.append("lib/io/in")
	sys.path.append("lib/comum")
	sys.path.append("processamento")

from log 	import Log
from dados 	import Dados
from local 	import Local
from ftp 	import Ftp
from ftp_tls 	import Ftp_tls
from smb 	import Smb
from ssh 	import Ssh
from email_io 	import Email
from parametros	import Parametros

class Entrada:
	def __init__(self):
		self.log   = Log()
		self.log.update('Entrada iniciada...')
		self.log.update('###################\n')
		self.dados = Dados()


	def verifica(self):
		self.log.update('verificando entrada...\n')
		e=self.dados.getEntradas()
	
		#Varrendo as entradas cadastradas
		for i in e:
			#print i
			sistema=i[0]
			meio=i[1]
			servidor=i[2]
			path=i[3]
			entrada=i[4]
			usuario=i[5]
			senha=i[6]

			self.log.update('####################################################################\n')
			self.log.update('entrada=' + meio + ' - servidor=' + servidor + ' - path=' + path + '\n')
			#self.log.update('usuario=' + str(usuario) + ' - senha=' + str(senha) + '\n')

			# Tentando reservar esta entrada
			l=self.dados.lockEntrada(entrada)

			if meio == 'disco':
    				print "Opcao local"
				en= Local(path, sistema)
			elif meio == 'ftp':
    				print "Opcao ftp"
				en= Ftp(servidor, path, sistema, usuario, senha )
			elif meio == 'ftps':
    				print "Opcao ftp_tls - nao implementada na verso 2.4.3 do python!!!"
				#en= Ftp_tls(servidor, path, sistema, usuario, senha )
			elif meio == 'ssh':
    				print "Opcao ssh"
				en= Ssh(servidor,path)
			elif meio == 'smb':
    				print "Opcao smb"
				en= Smb(servidor,path)
			elif meio == 'email':
    				print "Opcao email"
				en= Email(servidor,path)
			elif meio == 'parametros':
    				print "Opcao parametros"
				en= Parametros(sistema)
			else:
    				print "Opcao nao exite"

			# Liberando esta entrada
			l=self.dados.unlockEntrada(entrada)
# teste unitario
#local teste
if flag_unit_test==1:
	inner=Entrada()
	inner.verifica()
